草庐IT

Android PlusOneButton 不初始化

全部标签

c++ - 为什么我不能像这样初始化结构?

structEmployee{intage;doublewage;};Employeejoe;joe={2,60.0};//usinginitializationlistinsteadofdoingEmployeejoe={2,60.0}我在VisualStudio2015中遇到编译错误,但能够使用C++版本C++11在代码块中执行 最佳答案 它应该可以工作。复制列表初始化以下是有效的,称为copy-list-initialization:joe={2,60.0};它实际上是右侧正在初始化的临时文件。看看thisanswer.如所提

c++ - 使用私有(private)构造函数进行静态初始化

在一个类中,我有一个静态成员代表该类的单例实例:classA{public:staticconststd::shared_ptrINSTANCE;private:A();};为了防止更多实例,我将构造函数设为私有(private)。现在我无法初始化静态变量,因为初始化程序无法访问私有(private)成员。这是我在.cpp文件中使用的代码:conststd::shared_ptrA::INSTANCE=std::make_shared();工厂方法也无济于事,因为它也必须是公开的。我还能做些什么来完成这项工作?注意:如果可能,我想避免使用典型的staticget()方法。

c++ - 内置成员的默认初始化

这个问题在这里已经有了答案:Defaultconstructors,initializationofPODandimplicittypeconversionsinC++11(2个答案)关闭6年前。BjarneStroustrup的TheC++ProgrammingLanguage,4thEdition,17.6.3.1指出The‘‘defaultinitialization’’ofabuilt-inmemberleavesthatmemberuninitialized.引用编译器默认生成的构造函数。但是在17.6.2中我们有如下代码structS{stringa;intb;};Sf(S

C++:将指针设置为 nullptr 与将其初始化为新变量类型之间的区别

我正在学习C++,我知道“new”关键字用于将内存中的地址分配给指针。而且我认为在使用“nullptr”时会初始化一个指向任何内容的指针。那是对的吗?引用示例://usingnullptrint*x=nullptr;//thisisjustapointerthatpointstonothingand//willneedtobeinitializedwithanaddressbeforeit//itcanbeused.Correct?//usingnewint*x=newint;//thisisbasicallygivingxanaddressinmemory.Willthe//addr

c++ - C++初始化中的 "several values"是什么?

这是一道关于C++Primer(5thedition)Chapter3.2,Page84,85的问题。Whenwehaveasingleinitializer,wecanuseeitherthedirectorcopyformofinitialization.Whenweinitializeavariablefrommorethanonevalue,suchasintheinitializationofs4,wemustusethedirectformofinitialization:strings4(10,'c');//s4is"cccccccccc"strings5="hiya";

c++ - 无法识别初始化类型

我看到这段代码,意识到我记不起使用的初始化类型,也记不起它的假定行为。Pointp=(3,2);似乎只将后一个值(在本例中为2)作为参数传递给构造函数,因此PrintOut显示类似x=2y=5而不是预期的x=3y=2classPoint{public:Point(intx=5,inty=5):a(x),b(y){};voidprintOut()const{cout 最佳答案 因为Pointp=(3,2);不是用2个参数调用构造函数,而是用1个参数调用它,2。这是因为逗号运算符,它基本上会丢弃第一个表达式(3)的结果,并返回最后一个(

c++ - 在 C++17 中,是否可以使用带有初始值设定项的 if 语句来解包可选?

我正在使用std::optional编写一些代码,我想知道C++17的“带有初始化器的if语句”是否能够帮助解包值?std::optionaloptionalInt=GetOptionalInt();我在这里编写函数Unpack:if(auto[value,has_value]=optionalInt.Unpack();has_value){//Usevaluehere.}但是,我的问题是。C++17“带有初始化程序的if语句”在这里有帮助吗?如果是这样,它将如何编码?更新,这实际上主要是使用optional时的一个问题,它非常容易被滥用,因为optional和*optional都返回

c++ - 当返回一个用花括号初始化列表初始化的对象时,我能保证一对构造函数和析构函数调用吗?

以下面的类为例#includeusingnamespacestd;classA{private:inta_;intb_;A(constA&)=delete;A&operator=(constA&)=delete;A(A&&)=delete;A&operator=(A&&)=delete;public:A(inta,intb):a_{a},b_{b}{coutItgivestheexpectedresult.构造对象,执行操作,然后销毁。但是,我担心这是否得到保证。我主要担心的是,由于标准赋予编译器的自由,我是否会看到我不知道的任何效果。我不认为复制省略是这里的一个因素,因为所有移动和复

c++ - 使用保留 vector 初始化 vector 的 vector

我有一个vector的vector:std::vector>v;我想用5个项目(T的5个vector)初始化这个vector。这些vector中的每一个都将包含0到10个项目。显然,我需要内部vectorreserved为10而不是sized为10。我不需要发生不必要的重新分配或复制。换句话说,我需要位置构造。因为std::vector没有提供一个构造函数来保留所需数量的项目,我想出了这个主意:std::vector>v(5,[](){std::vectortemp;temp.reserve(10);returntemp;}());问题:有效吗?这是否包含未定义的行为?我是否真的最大限

c++ - 为什么一个 const Class& 可以被初始化为自身?

今天我遇到了一个非常愚蠢但难以检测的错误。相关代码如下:classVector;classPointIterator{constVector&x;constVector&yv;PointIterator(constVector&xv,constVector&yvo):x(xv),yv(yv){;};//^^hereiswrong};为什么这样的代码是合法的C++?在任何情况下都可以使用yv变量吗?我知道关于intx=x+1;的类似问题,(请参阅thisquestion)但后者未正确初始化,您仍然可以使用x变量,而在上面的代码中,我认为您不能使用yv。奖励点:是否有任何编译选项可以让我检